size=20000
#facebook
facebook_budget=15
ads_days=5
conversion=[17,48]
reach=[527,1500]
#ecommerce
ali_price=6.19
shipping=0
selling_price=(ali_price+shipping)+(ali_price+shipping)*1.5
#selling_price=19
#payment_gate
two_checkout=(selling_price+shipping)*0.035+0.35
#arrays
prior_arr=np.empty(size)
likelihood_arr=np.empty(size)
for i in range(size):
prior=np.random.beta(np.random.randint(conversion[0],conversion[1]),(np.random.randint(reach[0],reach[1])-np.random.randint(conversion[0],conversion[1])),size=ads_days)
likelihood=np.random.binomial(np.random.randint(reach[0],reach[1]),prior,size=ads_days)
prior_arr[i]=round(np.mean(prior)*100,2)
likelihood_arr[i]=np.sum(likelihood)
df=pd.DataFrame(data={"Conversion rate":prior_arr,"Conversions":likelihood_arr})
df['Revenue']=df["Conversions"]*selling_price
df['Cost of Sales']=df["Conversions"]*(ali_price+shipping)
df['Gross profit']=df['Revenue']-df['Cost of Sales']
df["Expences"]=ads_days*facebook_budget+20+12
df['Operation Profit']=df['Gross profit']-df["Expences"]
df['Tax']=df['Operation Profit']*0.2
df['Net Profit']=df['Operation Profit']-df['Tax']
df['Investment Nedded']=df['Cost of Sales']+df["Expences"]
df["Profit per unit"]=round(df["Net Profit"]/df['Conversions'],2)
df['Return on investment']=round(df['Net Profit']/df['Investment Nedded']*100)
print("Selling price is:",selling_price)
for i in ["Net Profit","Investment Nedded",'Return on investment',"Conversion rate","Conversions",'Profit per unit']:
fig1=px.histogram(df,x=i,marginal='box')
fig1.add_trace(
go.Scatter(
x=[pymc3.stats.hpd(df[i])[0], pymc3.stats.hpd(df[i])[0]],
y=[0, 200],
mode="lines",
line=go.scatter.Line(color="red"),
showlegend=False))
fig1.add_trace(
go.Scatter(
x=[pymc3.stats.hpd(df[i])[1], pymc3.stats.hpd(df[i])[1]],
y=[0, 200],
mode="lines",
line=go.scatter.Line(color="red"),
showlegend=False))
if i == "Conversion rate":
print("The HPD of the "+i+" is bettwen",round(pymc3.stats.hpd(df[i])[0],2),"and",round(pymc3.stats.hpd(df[i])[1],2))
else:
print("The HPD of the "+i+" is bettwen",round(pymc3.stats.hpd(df[i])[0]),"and",round(pymc3.stats.hpd(df[i])[1]))
fig1.show()
print("________________________________________________")